package solutions.ferpa.ztest.intf;

import br.com.telescope.adsrt.dom.DomFlag;
import br.com.telescope.adsrt.dom.DomId;
import br.com.telescope.adsrt.dom.DomOpcao;
import br.com.telescope.adsrt.dom.DomTextLong;
import br.com.telescope.adsrt.dom.DomUpper;
import br.com.telescope.t2.ServiceModel;
import br.com.telescope.t2.feature.DeleteFeature;
import br.com.telescope.t2.feature.InsertFeature;
import br.com.telescope.t2.feature.ListFeature;
import br.com.telescope.t2.feature.QueryFeature;
import br.com.telescope.t2.feature.UpdateFeature;
import br.com.telescope.t2.feature.ViewFeature;
import solutions.ferpa.ztest.ent.*;

/**
 * Motivos de aprovações ou reprovações.
 * <p>
 * Interface para manutenção de Motivo da aprovação ou reprovação
 * <P>
 * Telescope origin: ZTEST.CAD_MOTIVO_APROVA_REPROVA_ENSAIO
 * <P>
 * Base entity: ZTEST.MOTIVO_APROVA_REPROVA_ENSAIO
 * <P>
 * @author TELESCOPE - Build task T2 Web Interface Generator
 * <P>
 * @version 0.1
 */
public class CadMotivoAprovaReprovaEnsaio extends ServiceModel {
    
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    public static final String GLOBAL_NAME = "ZTEST.CAD_MOTIVO_APROVA_REPROVA_ENSAIO";
    
    @Override
    public String globalName() {
        return GLOBAL_NAME;
    }
    
    {
        setTitle("Motivos de aprovações ou reprovações");
    }
    
    protected EntMotivoAprovaReprovaEnsaio base;
    protected EntMotivoAprovaReprovaEnsaio rec; // NEED_TJW1_COMPATIBILITY
    
    // Record items
    private DomUpper aMotivo;
    private DomOpcao aClassificacao;
    private DomFlag aExigeParecer;
    private DomTextLong aDescricao;
    private DomId aId;
    
    // Query items
    private DomTextLong qDescricao;
    private DomOpcao qClassificacao;
    private DomFlag qExigeParecer;
    private DomUpper qMotivo;
    
    @Override
    public String getBaseSql() {
        return "select BASE.*"
                + " from MOTIVO_APROVA_REPROVA_ENSAIO BASE";
    }
    
    @Override
    public void initAttributes() {
        
        aMotivo = new DomUpper();
        aMotivo.context(ctx).name("MOTIVO").label("Motivo (aprovação/reprovação)");
        
        aClassificacao = new DomOpcao();
        aClassificacao.context(ctx).name("CLASSIFICACAO").label("Classificação").group(true);
        aClassificacao.addOption("R", "Motivo de reprovação");
        aClassificacao.addOption("A", "Motivo para aprovação");
        aClassificacao.setDefaultValue("R");
        
        aExigeParecer = new DomFlag();
        aExigeParecer.context(ctx).name("EXIGE_PARECER").label("Exige parecer");
        aExigeParecer.setDefaultValue("N");
        
        aDescricao = new DomTextLong();
        aDescricao.context(ctx).name("DESCRICAO").label("Descrição do motivo").width(60).height(5);
        
        aId = new DomId();
        aId.context(ctx).name("ID").label("Id");
        
        
        qDescricao = new DomTextLong();
        qDescricao.context(ctx).name("DESCRICAO").label("Descrição do motivo");
        
        qClassificacao = new DomOpcao();
        qClassificacao.context(ctx).name("CLASSIFICACAO").label("Classificação");
        qClassificacao.addOption("R", "Motivo de reprovação");
        qClassificacao.addOption("A", "Motivo para aprovação");
        
        qExigeParecer = new DomFlag();
        qExigeParecer.context(ctx).name("EXIGE_PARECER").label("Exige parecer");
        
        qMotivo = new DomUpper();
        qMotivo.context(ctx).name("MOTIVO").label("Motivo (aprovação/reprovação)");
    }
    
    @Override
    public String getQueryPkColumn() {
        return "BASE.ID";
    }
    
    @Override
    public void setId(String value) {
        this.aId.setValue(value);
    }
    
    @Override
    public EntMotivoAprovaReprovaEnsaio getRecord() {
        if (base == null) {
            base = new EntMotivoAprovaReprovaEnsaio(ctx);
            rec = base;
        }
        return this.base;
    }
    
    @Override
    public String getContextName() {
        return aMotivo.toText();
    }
    
    @Override
    public String getDefaultOrderBy() {
        return "MOTIVO, CLASSIFICACAO, EXIGE_PARECER, DESCRICAO";
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="QUERY">
    public class FQuery extends QueryFeature {
        
        @Override
        public void initForm() {
            addField(qMotivo, "opt");
            addField(qClassificacao, "opt");
            addField(qExigeParecer, "opt");
            addField(qDescricao, "opt");
        }
        
        {
            setFeatureName("QUERY");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="LIST">
    public class FList extends ListFeature {
        
        @Override
        public void initForm() {
            addField(aMotivo, "view");
            addField(aClassificacao, "view");
            addField(aExigeParecer, "view");
            addField(aDescricao, "view");
        }
        
        {
            setFeatureName("LIST");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="VIEW">
    public class FView extends ViewFeature {
        
        @Override
        public void initForm() {
            addField(aMotivo, "view");
            addField(aClassificacao, "view");
            addField(aExigeParecer, "view");
            addField(aDescricao, "view");
        }
        
        {
            setFeatureName("VIEW");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="INSERT">
    public class FInsert extends InsertFeature {
        
        @Override
        public void initForm() {
            aMotivo.setOptional(false);
            addField(aMotivo, "rqd");
            aClassificacao.setOptional(false);
            addField(aClassificacao, "rqd");
            aExigeParecer.setOptional(false);
            addField(aExigeParecer, "rqd");
            addField(aDescricao, "opt");
        }
        
        {
            setFeatureName("INSERT");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="UPDATE">
    public class FUpdate extends UpdateFeature {
        
        @Override
        public void initForm() {
            aMotivo.setOptional(false);
            addField(aMotivo, "rqd");
            aClassificacao.setOptional(false);
            addField(aClassificacao, "rqd");
            aExigeParecer.setOptional(false);
            addField(aExigeParecer, "rqd");
            addField(aDescricao, "opt");
        }
        
        {
            setFeatureName("UPDATE");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="DELETE">
    public class FDelete extends DeleteFeature {
        
        @Override
        public void initForm() {
            addField(aMotivo, "view");
            addField(aClassificacao, "view");
        }
        
        {
            setFeatureName("DELETE");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="initFeatures">
    
    @Override
    protected void initFeatures() {
        addFeature(new FQuery());
        addFeature(new FList());
        addFeature(new FView());
        addFeature(new FInsert());
        addFeature(new FUpdate());
        addFeature(new FDelete());
        super.initFeatures();
    }
    
    @Override
    public String getDefaultFeature() {
        return "QUERY";
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Getters and Setters">
    
    public String getMotivo() {
        return aMotivo.getValue();
    }
    
    public void setMotivo(String value) {
        this.aMotivo.setValue(value);
    }
    
    public String getClassificacao() {
        return aClassificacao.getValue();
    }
    
    public void setClassificacao(String value) {
        this.aClassificacao.setValue(value);
    }
    
    public String getExigeParecer() {
        return aExigeParecer.getValue();
    }
    
    public void setExigeParecer(String value) {
        this.aExigeParecer.setValue(value);
    }
    
    public String getDescricao() {
        return aDescricao.getValue();
    }
    
    public void setDescricao(String value) {
        this.aDescricao.setValue(value);
    }
    
    @Override
    public Long getId() {
        return aId.getValue();
    }
    
    public void setId(Long value) {
        this.aId.setValue(value);
    }
    public String getQueryMotivo() {
        return qMotivo.getQueryValue();
    }
    
    public void setQueryMotivo(String value) {
        this.qMotivo.setQueryValue(value);
    }
    public String getQueryClassificacao() {
        return qClassificacao.getQueryValue();
    }
    
    public void setQueryClassificacao(String value) {
        this.qClassificacao.setQueryValue(value);
    }
    public String getQueryExigeParecer() {
        return qExigeParecer.getQueryValue();
    }
    
    public void setQueryExigeParecer(String value) {
        this.qExigeParecer.setQueryValue(value);
    }
    public String getQueryDescricao() {
        return qDescricao.getQueryValue();
    }
    
    public void setQueryDescricao(String value) {
        this.qDescricao.setQueryValue(value);
    }
    // </editor-fold>
    
}
